# 回顾:if语句中的else是什么意思?当判断条件不满足要求时,执行else中的命令

"""
循环中的else:
格式:
    while 条件:
        循环体
    else:
        代码块
    当循环条件不满足时,执行else中的代码

    for 临时变量 in 容器类型:
        循环体
    else:
        代码块
    当容器类型的元素遍历完后执行else中的代码
# 总结: 当循环正常结束后,就要执行else中的代码

# 注意: 当循环异常终止时,else中的代码将不会执行
# while循环不是因为条件不成立而终止循环就是异常终止, 比如 break
# for 循环中元素没有遍历完就终止了循环属于异常终止, 比如break
# continue不会造成循环的异常结束
"""

# 需求: 下载软件分为10个安装包, 全部下载完则输出下载完成,否则不输出
# for
for i in range(10):
    print(f'第{i + 1}个安装包已经下载完成')
else:
    # 循环正常结束,该代码块被执行
    print('所有文件已经下载完成')

print('--------------------------')

for i in range(10):
    # 当下载到第6个安装包时,系统异常,终止下载
    if i + 1 == 6:
        print('系统异常,终止下载')
        break
    print(f'第{i + 1}个安装包已经下载完成')
else:
    # 使用了break 循环异常结束,该代码不会被执行
    print('所有文件已经下载完成')
# 写到循环体外,无论循环是否正常结束,均会执行此代码.
# print('所有文件已经下载完成')

print('--------------------------')

# while
i = 1
while i <= 10:
    print(f'第{i}个安装包已经下载完成')
    i += 1
else:
    # 循环正常结束,该代码块被执行
    print('所有文件已经下载完成')

print('--------------------------')

i = 1
while i <= 10:
    # 当下载到第6个安装包时,系统异常,终止下载
    if i + 1 == 6:
        print('系统异常,终止下载')
        break
    print(f'第{i}个安装包已经下载完成')
    i += 1
else:
    # 循环正常结束,该代码块被执行
    print('所有文件已经下载完成')

print('--------------------------')

# 思考: 使用continue 会造成循环异常结束么?
for i in range(10):
    # 当下载到第6个安装包时,由于网络波动,跳过该安装包下载
    if i + 1 == 6:
        print('由于网络波动,跳过该安装包下载')
        continue
    print(f'第{i + 1}个安装包已经下载完成')
else:
    # 使用continue不会影响循环的次数和循环条件的判断,所以循环依旧正常结束, else中的代码会被执行.
    print('所有文件已经下载完成')
